home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / linux / utsname.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.6 KB  |  95 lines

  1. #ifndef _LINUX_UTSNAME_H
  2. #define _LINUX_UTSNAME_H
  3.  
  4. #define __OLD_UTS_LEN 8
  5.  
  6. struct oldold_utsname {
  7.     char sysname[9];
  8.     char nodename[9];
  9.     char release[9];
  10.     char version[9];
  11.     char machine[9];
  12. };
  13.  
  14. #define __NEW_UTS_LEN 64
  15.  
  16. struct old_utsname {
  17.     char sysname[65];
  18.     char nodename[65];
  19.     char release[65];
  20.     char version[65];
  21.     char machine[65];
  22. };
  23.  
  24. struct new_utsname {
  25.     char sysname[65];
  26.     char nodename[65];
  27.     char release[65];
  28.     char version[65];
  29.     char machine[65];
  30.     char domainname[65];
  31. };
  32.  
  33. #ifdef __KERNEL__
  34.  
  35. #include <linux/sched.h>
  36. #include <linux/kref.h>
  37. #include <linux/nsproxy.h>
  38. #include <linux/err.h>
  39. #include <asm/atomic.h>
  40.  
  41. struct uts_namespace {
  42.     struct kref kref;
  43.     struct new_utsname name;
  44. };
  45. extern struct uts_namespace init_uts_ns;
  46.  
  47. #ifdef CONFIG_UTS_NS
  48. static inline void get_uts_ns(struct uts_namespace *ns)
  49. {
  50.     kref_get(&ns->kref);
  51. }
  52.  
  53. extern struct uts_namespace *copy_utsname(unsigned long flags,
  54.                     struct uts_namespace *ns);
  55. extern void free_uts_ns(struct kref *kref);
  56.  
  57. static inline void put_uts_ns(struct uts_namespace *ns)
  58. {
  59.     kref_put(&ns->kref, free_uts_ns);
  60. }
  61. #else
  62. static inline void get_uts_ns(struct uts_namespace *ns)
  63. {
  64. }
  65.  
  66. static inline void put_uts_ns(struct uts_namespace *ns)
  67. {
  68. }
  69.  
  70. static inline struct uts_namespace *copy_utsname(unsigned long flags,
  71.                     struct uts_namespace *ns)
  72. {
  73.     if (flags & CLONE_NEWUTS)
  74.         return ERR_PTR(-EINVAL);
  75.  
  76.     return ns;
  77. }
  78. #endif
  79.  
  80. static inline struct new_utsname *utsname(void)
  81. {
  82.     return ¤t->nsproxy->uts_ns->name;
  83. }
  84.  
  85. static inline struct new_utsname *init_utsname(void)
  86. {
  87.     return &init_uts_ns.name;
  88. }
  89.  
  90. extern struct rw_semaphore uts_sem;
  91.  
  92. #endif /* __KERNEL__ */
  93.  
  94. #endif /* _LINUX_UTSNAME_H */
  95.